import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import topLevelAwait from "vite-plugin-top-level-await";
import { visualizer } from "rollup-plugin-visualizer";
import compression from 'vite-plugin-compression'
export default defineConfig({
  base: '/H5/',
  plugins: [
    vue(), 
    topLevelAwait({ 
      promiseExportName: '__tla', 
      promiseImportName: (i) => `__tla_${i}` 
    }),
    // 只在构建时启用可视化分析
    visualizer({
      filename: "dist/stats.html", // 生成的分析报告文件路径
      open: true, // 构建完成后自动打开浏览器
      gzipSize: true, // 显示gzip后的大小
      brotliSize: true // 显示brotli压缩后的大小
    }),
     compression({
      algorithm: 'gzip',
      ext: '.gz',
      threshold: 10240, // 只压缩大于 10KB 的文件
      deleteOriginFile: false, // 不删除原始文件
      verbose: true
    })
  ],
  build: {
    outDir: 'dist',
    rollupOptions: {
      output: {
        manualChunks(id: string) {
          // 分离 vendor 包
          if (id.includes('node_modules')) {
            return 'vendor';
          }
          // 分离登录相关组件
          if (id.includes('Login.vue') || id.includes('LoginByPhone.vue')) {
            return 'login';
          }
          if (id.includes('pdfjs-dist') || id.includes('vue-pdf-embed')) {
            return 'pdf-lib';
          }
        }
      }
    }
  },
  resolve: {
    alias: {
      '@antv/f6-hammerjs': 'hammerjs'
    }
  },
  server: {
    host: '0.0.0.0',
    port: 5217,
    proxy: {
      '^/(api|user|enterprise|uploadFile)/.*': {
        target: 'https://www.jyszprd.com/h5-api/',
        changeOrigin: true
      }
    }
  }
})